In deze les testen we de PHP DAL klasse uit. Terzelfdertijd gebruiken we hiervoor de Threepenny (PHP ThreepennyMVC). Als voorbeeld nemen we de EventCategory tabel van het Fric-frac project.
Voorbereiding
Het data/config.ini bestand:
[local]
database = "Cursist13"
username = root
password = root
host = 127.0.0.1
port = 3306
driver = mysql
[global]
database = Docent1
username = Docent1
password = XXXXXXXXXXX
host = xxx.xxx.xxx.xxx
port = 3306
driver = mysql
De tabellen maken
De SQL script vind je in data/sqlscripts/fric-frac-ddl.sql. Vervang de databasename door je eigen databasename.
De view Views/EventCategory/Index.php gebruikt de Views/EventCategory/ReadingAll.php view. Eerst kijken we of er iets in het list attribuut van de $model array zit. Daar moeten we door het list attribuut van de $model associatieve array lopen om de alle rijen in de EventCategory tabel te tonen:
De EventCategory/InsertingOne.php view aanpassen
Pas het action attribuut van de Insert One knop in het form element aan en het href attribuut van de Annuleren link:
Een controllerklasse maken om de Dal klasse te testen:
in een bestand met de naam Controllers/EventCategoryController.php:
<?php
/**
* Created by ModernWays
* User: Jef Inghelbrecht
* Date: 3/04/2020
* Time: 13:32
*/
namespace Fricfrac\Controllers;
class EventCategoryController extends \ThreepennyMVC\Controller
{
...
}
de index methode
De methode index toevoegen om toegang te krijgen tot de EventCategory tabel. In de view moet rechts een lijst van alle rijen staan. We vullen het model met alle rijen uit de tabel EventCategory. We gebruiken daarvoor de ReadAll static methode de Dal klasse. Ook de melding die de Dal::ReadAll methode gemaakt heeft stoppen we in het model. Die wordt in de Views/EventCategory/Index.php de view gebruikt:
public function index()
{
$model['list'] = \AnOrmApart\Dal::readAll('EventCategory');
$model['message'] = \AnOrmApart\Dal::getMessage();
return $this->view($model);
}
ga via Admin/Index naar de EventCategory/Index of typ in de url http://localhost:63346/EventCategory/Index:
Resultaat:
EventCategory - Index view
Create
Dat zijn twee use cases. Eerst het formulier InsertingOne tonen en dan indien gewenst een nieuwe rij in de tabel toevoegen.
CreateOne
De methode createOne toevoegen om 1 rij in de tabel EventCategory toevoegen. Deze retourneert de view die we hierboven gemaakt hebben. Vermits de naam van de view niet overeenkomt met de naam van de methode van de controller moeten we het pad als argument meegeven. Het model bevat hier enkel de feedback van de create methode van de Dal en de naam van de tabel:
/**
* Created by ModernWays
* User: Jef Inghelbrecht
* Date: 11/04/2019
* Time: 10:32
*/
namespace ModernWays\Controllers;
class EventCategoryTestController extends \ModernWays\Controller
{
public function createOne() {
$model = array('tableName' => 'EventCategory',
'error' => 'Geen');
$eventCategory = array (
"Name" => $_POST['Name'];
if (\AnOrmApart\Dal::create('EventCategory', $eventCategory, 'Name')) {
$model['message'] = "Rij toegevoegd! {$eventCategory['Name']} is toegevoegd aan EventCategory";
} else {
$model['message'] = "Oeps er is iets fout gelopen! Kan {$eventCategory['Name']} niet toevoegen aan EventCategory";
$model['error'] = \AnOrmApart\Dal::getMessage();
}
return $this->view($model, 'Views/EventCateory/Index.php');
}
}
InsertingOne
De methode die het model vult en de view oproept stopt de waarden, die door de gebruiker in het formulier werden ingetypt, in een array. Die wordt samen met de tabelnaam en de kolomnaam aan de create methode van de Dal klasse doorgegeven. Dan wordt de $model array gevuld voor de EventCategory/Index.php view:
public function insertingOne()
{
$model['list'] = \AnOrmApart\Dal::readAll('EventCategory');
$model['message'] = \AnOrmApart\Dal::getMessage();
return $this->view($model);
}
Uitproberen
ga via Admin/Index naar de EventCategory/Index of typ in de url http://localhost:63346/EventCategory/InsertingOne:
EventCategory - InsertingOne view
Klik op de save knop om de rij te voegen. We keren terug naar de EventCategory/InsertingOne.php view en de we zijn rechts dat de rij is toegevoegd:
EventCategory - Rij toegevoegd - terug naar Index view